From 7f804c918cc7078909c50917cd1b89c9264f344a Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Tue, 24 Apr 2007 10:34:47 +0100 Subject: [PATCH] hvmloader: Fix e820_collapse() to not lose E820 entries. Fixes bugzilla bug #971. Signed-off-by: Keir Fraser --- tools/firmware/hvmloader/util.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index 940f6f0598..b80788e838 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -295,7 +295,7 @@ static void e820_collapse(void) ((ent[i].addr + ent[i].size) == ent[i+1].addr) ) { ent[i].size += ent[i+1].size; - memcpy(&ent[i+1], &ent[i+2], *E820_MAP_NR - i - 2); + memcpy(&ent[i+1], &ent[i+2], (*E820_MAP_NR-i-2) * sizeof(*ent)); (*E820_MAP_NR)--; } else @@ -322,10 +322,10 @@ uint32_t e820_malloc(uint32_t size) (addr != ent[i].addr) || /* starts above 4gb? */ ((addr + size) < addr) ) /* ends above 4gb? */ continue; - + if ( ent[i].size != size ) { - memmove(&ent[i+1], &ent[i], (*E820_MAP_NR - i) * sizeof(*ent)); + memmove(&ent[i+1], &ent[i], (*E820_MAP_NR-i) * sizeof(*ent)); (*E820_MAP_NR)++; ent[i].size -= size; addr += ent[i].size; -- 2.30.2